package com.weilele.mvvm.base.helper

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.LifecycleOwner

/**
 * 描述：此接口使mvvm模式下的dialog,fragment,activity,popupWindow的子类命名方法统一，方便互转
 */
interface BaseMvvmInterface : OnSingleClickListener {

    /**
     * 获取布局资源或者View
     * 调用顺序1
     */
    fun getLayoutResOrView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): Any?

    /**
     * 获取布局资源或者View
     * 调用顺序2
     */
    fun getLayoutResOrView(inflater: LayoutInflater, parent: ViewGroup?): Any?

    /**
     * 如果使用此view，将会导致binding无效
     * 调用顺序3
     */
    fun onCreateContentView(inflater: LayoutInflater, parent: ViewGroup?): View? = null

    /**
     * 获取需要注册点击的view
     */
    fun getClickView(): List<View?>?

    /**
     * 获取需要注册监听的
     */
    fun getObserverLiveData(): List<LiveDataWrap>? = null

    /**
     * 获取永远需要注册监听的
     */
    fun getObserverLiveDataForever(): List<LiveDataWrap>? = null


    /**
     * 初始化view
     * 不必要，为了代码规范设置
     */
    fun initUi(savedInstanceState: Bundle?)

    /**
     * 初始化数据
     * 不必要，为了代码规范设置
     */
    fun initData()
}